home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / Devices.p < prev    next >
Encoding:
Text File  |  1998-02-12  |  21.0 KB  |  520 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Devices.p
  3.  
  4.      Contains:    Device Manager Interfaces.
  5.  
  6.      Version:    Technology:    Mac OS 8
  7.                  Release:    Universal Interfaces 3.1
  8.  
  9.      Copyright:    © 1985-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT Devices;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __DEVICES__}
  28. {$SETC __DEVICES__ := 1}
  29.  
  30. {$I+}
  31. {$SETC DevicesIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __OSUTILS__}
  35. {$I OSUtils.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __FILES__}
  38. {$I Files.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __QUICKDRAW__}
  41. {$I Quickdraw.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __NAMEREGISTRY__}
  44. {$I NameRegistry.p}
  45. {$ENDC}
  46. {$IFC UNDEFINED __CODEFRAGMENTS__}
  47. {$I CodeFragments.p}
  48. {$ENDC}
  49. {$IFC UNDEFINED __DRIVERFAMILYMATCHING__}
  50. {$I DriverFamilyMatching.p}
  51. {$ENDC}
  52.  
  53.  
  54. {$PUSH}
  55. {$ALIGN MAC68K}
  56. {$LibExport+}
  57.  
  58. { Values of the 'message' parameter to a Chooser device package }
  59.  
  60. CONST
  61.     chooserInitMsg                = 11;                            {  the user selected this device package  }
  62.     newSelMsg                    = 12;                            {  the user made new device selections  }
  63.     fillListMsg                    = 13;                            {  fill the device list with choices  }
  64.     getSelMsg                    = 14;                            {  mark one or more choices as selected  }
  65.     selectMsg                    = 15;                            {  the user made a selection  }
  66.     deselectMsg                    = 16;                            {  the user canceled a selection  }
  67.     terminateMsg                = 17;                            {  allows device package to clean up  }
  68.     buttonMsg                    = 19;                            {  the user selected a button  }
  69.  
  70.  
  71. { Values of the 'caller' parameter to a Chooser device package }
  72.     chooserID                    = 1;
  73.  
  74.  
  75. { Values of the 'message' parameter to a Monitor 'mntr' }
  76.     initMsg                        = 1;                            { initialization }
  77.     okMsg                        = 2;                            { user clicked OK button }
  78.     cancelMsg                    = 3;                            { user clicked Cancel button }
  79.     hitMsg                        = 4;                            { user clicked control in Options dialog }
  80.     nulMsg                        = 5;                            { periodic event }
  81.     updateMsg                    = 6;                            { update event }
  82.     activateMsg                    = 7;                            { not used }
  83.     deactivateMsg                = 8;                            { not used }
  84.     keyEvtMsg                    = 9;                            { keyboard event }
  85.     superMsg                    = 10;                            { show superuser controls }
  86.     normalMsg                    = 11;                            { show only normal controls }
  87.     startupMsg                    = 12;                            { code has been loaded }
  88.  
  89.  
  90. { control codes for DeskAccessories }
  91.     goodbye                        = -1;                            {  heap being reinitialized  }
  92.     killCode                    = 1;                            {  KillIO requested  }
  93.     accEvent                    = 64;                            {  handle an event  }
  94.     accRun                        = 65;                            {  time for periodic action  }
  95.     accCursor                    = 66;                            {  change cursor shape  }
  96.     accMenu                        = 67;                            {  handle menu item  }
  97.     accUndo                        = 68;                            {  handle undo command  }
  98.     accCut                        = 70;                            {  handle cut command  }
  99.     accCopy                        = 71;                            {  handle copy command  }
  100.     accPaste                    = 72;                            {  handle paste command  }
  101.     accClear                    = 73;                            {  handle clear command  }
  102.  
  103. { Control/Status Call Codes }
  104.     drvStsCode                    = 8;                            {  status call code for drive status  }
  105.     ejectCode                    = 7;                            {  control call eject code  }
  106.     tgBuffCode                    = 8;                            {  set tag buffer code  }
  107.  
  108. { miscellaneous Device Manager constants }
  109.     ioInProgress                = 1;                            {  predefined value of ioResult while I/O is pending  }
  110.     aRdCmd                        = 2;                            {  low byte of ioTrap for Read calls  }
  111.     aWrCmd                        = 3;                            {  low byte of ioTrap for Write calls  }
  112.     asyncTrpBit                    = 10;                            {  trap word modifier  }
  113.     noQueueBit                    = 9;                            {  trap word modifier  }
  114.  
  115. { flags used in the driver header and device control entry }
  116.     dReadEnable                    = 0;                            {  set if driver responds to read requests  }
  117.     dWritEnable                    = 1;                            {  set if driver responds to write requests  }
  118.     dCtlEnable                    = 2;                            {  set if driver responds to control requests  }
  119.     dStatEnable                    = 3;                            {  set if driver responds to status requests  }
  120.     dNeedGoodBye                = 4;                            {  set if driver needs time for performing periodic tasks  }
  121.     dNeedTime                    = 5;                            {  set if driver needs time for performing periodic tasks  }
  122.     dNeedLock                    = 6;                            {  set if driver must be locked in memory as soon as it is opened  }
  123.  
  124.     dNeedLockMask                = $4000;                        {  set if driver must be locked in memory as soon as it is opened  }
  125.     dNeedTimeMask                = $2000;                        {  set if driver needs time for performing periodic tasks  }
  126.     dNeedGoodByeMask            = $1000;                        {  set if driver needs to be called before the application heap is initialized  }
  127.     dStatEnableMask                = $0800;                        {  set if driver responds to status requests  }
  128.     dCtlEnableMask                = $0400;                        {  set if driver responds to control requests  }
  129.     dWritEnableMask                = $0200;                        {  set if driver responds to write requests  }
  130.     dReadEnableMask                = $0100;                        {  set if driver responds to read requests  }
  131.  
  132.  
  133. { run-time flags used in the device control entry }
  134.     dOpened                        = 5;                            {  driver is open  }
  135.     dRAMBased                    = 6;                            {  dCtlDriver is a handle (1) or pointer (0)  }
  136.     drvrActive                    = 7;                            {  driver is currently processing a request  }
  137.  
  138.     drvrActiveMask                = $0080;                        {  driver is currently processing a request  }
  139.     dRAMBasedMask                = $0040;                        {  dCtlDriver is a handle (1) or pointer (0)  }
  140.     dOpenedMask                    = $0020;                        {  driver is open  }
  141.  
  142.  
  143.  
  144. TYPE
  145.     DRVRHeaderPtr = ^DRVRHeader;
  146.     DRVRHeader = RECORD
  147.         drvrFlags:                INTEGER;
  148.         drvrDelay:                INTEGER;
  149.         drvrEMask:                INTEGER;
  150.         drvrMenu:                INTEGER;
  151.         drvrOpen:                INTEGER;
  152.         drvrPrime:                INTEGER;
  153.         drvrCtl:                INTEGER;
  154.         drvrStatus:                INTEGER;
  155.         drvrClose:                INTEGER;
  156.         drvrName:                SInt8;
  157.     END;
  158.  
  159.     DRVRHeaderHandle                    = ^DRVRHeaderPtr;
  160.     DCtlEntryPtr = ^DCtlEntry;
  161.     DCtlEntry = RECORD
  162.         dCtlDriver:                Ptr;
  163.         dCtlFlags:                INTEGER;
  164.         dCtlQHdr:                QHdr;
  165.         dCtlPosition:            LONGINT;
  166.         dCtlStorage:            Handle;
  167.         dCtlRefNum:                INTEGER;
  168.         dCtlCurTicks:            LONGINT;
  169.         dCtlWindow:                GrafPtr;
  170.         dCtlDelay:                INTEGER;
  171.         dCtlEMask:                INTEGER;
  172.         dCtlMenu:                INTEGER;
  173.     END;
  174.  
  175.     DCtlPtr                                = ^DCtlEntry;
  176.     DCtlHandle                            = ^DCtlPtr;
  177.     AuxDCEPtr = ^AuxDCE;
  178.     AuxDCE = PACKED RECORD
  179.         dCtlDriver:                Ptr;
  180.         dCtlFlags:                INTEGER;
  181.         dCtlQHdr:                QHdr;
  182.         dCtlPosition:            LONGINT;
  183.         dCtlStorage:            Handle;
  184.         dCtlRefNum:                INTEGER;
  185.         dCtlCurTicks:            LONGINT;
  186.         dCtlWindow:                GrafPtr;
  187.         dCtlDelay:                INTEGER;
  188.         dCtlEMask:                INTEGER;
  189.         dCtlMenu:                INTEGER;
  190.         dCtlSlot:                SInt8;
  191.         dCtlSlotId:                SInt8;
  192.         dCtlDevBase:            LONGINT;
  193.         dCtlOwner:                Ptr;
  194.         dCtlExtDev:                SInt8;
  195.         fillByte:                SInt8;
  196.         dCtlNodeID:                UInt32;
  197.     END;
  198.  
  199.     AuxDCEHandle                        = ^AuxDCEPtr;
  200. {    The NDRV Driver IO Entry Point and Commands }
  201.     UnitNumber                            = UInt16;
  202.     DriverOpenCount                        = UInt32;
  203.     DriverRefNum                        = SInt16;
  204.     DriverFlags                            = SInt16;
  205.     IOCommandCode                        = UInt32;
  206.  
  207. CONST
  208.     kOpenCommand                = 0;
  209.     kCloseCommand                = 1;
  210.     kReadCommand                = 2;
  211.     kWriteCommand                = 3;
  212.     kControlCommand                = 4;
  213.     kStatusCommand                = 5;
  214.     kKillIOCommand                = 6;
  215.     kInitializeCommand            = 7;                            {  init driver and device }
  216.     kFinalizeCommand            = 8;                            {  shutdown driver and device }
  217.     kReplaceCommand                = 9;                            {  replace an old driver }
  218.     kSupersededCommand            = 10;                            {  prepare to be replaced by a new driver }
  219.     kSuspendCommand                = 11;                            {  prepare driver to go to sleep }
  220.     kResumeCommand                = 12;                            {  wake up sleeping driver }
  221.  
  222.  
  223. TYPE
  224.     AddressSpaceID = ^LONGINT;
  225.     IOCommandID = ^LONGINT;
  226.     IOCommandKind                        = UInt32;
  227.  
  228. CONST
  229.     kSynchronousIOCommandKind    = $00000001;
  230.     kAsynchronousIOCommandKind    = $00000002;
  231.     kImmediateIOCommandKind        = $00000004;
  232.  
  233.  
  234. TYPE
  235.     DriverInitInfoPtr = ^DriverInitInfo;
  236.     DriverInitInfo = RECORD
  237.         refNum:                    DriverRefNum;
  238.         deviceEntry:            RegEntryID;
  239.     END;
  240.  
  241.     DriverReplaceInfo                    = DriverInitInfo;
  242.     DriverReplaceInfoPtr                 = ^DriverReplaceInfo;
  243.     DriverFinalInfoPtr = ^DriverFinalInfo;
  244.     DriverFinalInfo = RECORD
  245.         refNum:                    DriverRefNum;
  246.         deviceEntry:            RegEntryID;
  247.     END;
  248.  
  249.     DriverSupersededInfo                = DriverFinalInfo;
  250.     DriverSupersededInfoPtr             = ^DriverSupersededInfo;
  251.  
  252. {  Contents are command specific }
  253.  
  254.     IOCommandContentsPtr = ^IOCommandContents;
  255.     IOCommandContents = RECORD
  256.         CASE INTEGER OF
  257.         0: (
  258.             pb:                    ParmBlkPtr;
  259.             );
  260.         1: (
  261.             initialInfo:        DriverInitInfoPtr;
  262.             );
  263.         2: (
  264.             finalInfo:            DriverFinalInfoPtr;
  265.             );
  266.         3: (
  267.             replaceInfo:        DriverReplaceInfoPtr;
  268.             );
  269.         4: (
  270.             supersededInfo:        DriverSupersededInfoPtr;
  271.             );
  272.     END;
  273.  
  274. {$IFC TYPED_FUNCTION_POINTERS}
  275.     DriverEntryPointPtr = FUNCTION(SpaceID: AddressSpaceID; CommandID: IOCommandID; Contents: IOCommandContents; Code: IOCommandCode; Kind: IOCommandKind): OSErr; C;
  276. {$ELSEC}
  277.     DriverEntryPointPtr = ProcPtr;
  278. {$ENDC}
  279.  
  280. { Record to describe a file-based driver candidate }
  281.     FileBasedDriverRecordPtr = ^FileBasedDriverRecord;
  282.     FileBasedDriverRecord = RECORD
  283.         theSpec:                FSSpec;                                    {  file specification }
  284.         theType:                MacDriverType;                            {  nameInfoStr + version number }
  285.         compatibleProp:            BOOLEAN;                                {  true if matched using a compatible name }
  286.         pad:                    PACKED ARRAY [0..2] OF UInt8;            {  alignment }
  287.     END;
  288.  
  289. { Detailed Record to describe a file-based driver candidate. Includes fragment name }
  290.     FileBasedDriverDetailedPtr = ^FileBasedDriverDetailed;
  291.     FileBasedDriverDetailed = RECORD
  292.         fileBasedDriver:        FileBasedDriverRecord;
  293.         fragName:                Str63;
  294.     END;
  295.  
  296. { Driver Loader API }
  297.  
  298. FUNCTION HigherDriverVersion(VAR driverVersion1: NumVersion; VAR driverVersion2: NumVersion): SInt16; C;
  299. FUNCTION VerifyFragmentAsDriver(fragmentConnID: CFragConnectionID; VAR fragmentMain: DriverEntryPointPtr; VAR driverDesc: DriverDescriptionPtr): OSErr; C;
  300. FUNCTION GetDriverMemoryFragment(memAddr: Ptr; length: LONGINT; fragName: Str63; VAR fragmentConnID: CFragConnectionID; VAR fragmentMain: DriverEntryPointPtr; VAR driverDesc: DriverDescriptionPtr): OSErr; C;
  301. FUNCTION GetDriverDiskFragment(fragmentSpec: FSSpecPtr; VAR fragmentConnID: CFragConnectionID; VAR fragmentMain: DriverEntryPointPtr; VAR driverDesc: DriverDescriptionPtr): OSErr; C;
  302. FUNCTION GetNamedDriverDiskFragment(fragmentSpec: FSSpecPtr; fragName: Str63; VAR fragmentConnID: CFragConnectionID; VAR fragmentMain: DriverEntryPointPtr; VAR driverDesc: DriverDescriptionPtr): OSErr; C;
  303. FUNCTION InstallDriverFromFragment(fragmentConnID: CFragConnectionID; VAR device: RegEntryID; beginningUnit: UnitNumber; endingUnit: UnitNumber; VAR refNum: DriverRefNum): OSErr; C;
  304. FUNCTION InstallDriverFromFile(fragmentSpec: FSSpecPtr; VAR device: RegEntryID; beginningUnit: UnitNumber; endingUnit: UnitNumber; VAR refNum: DriverRefNum): OSErr; C;
  305. FUNCTION InstallDriverFromMemory(memory: Ptr; length: LONGINT; fragName: Str63; VAR device: RegEntryID; beginningUnit: UnitNumber; endingUnit: UnitNumber; VAR refNum: DriverRefNum): OSErr; C;
  306. FUNCTION InstallDriverFromDisk(theDriverName: Ptr; VAR theDevice: RegEntryID; theBeginningUnit: UnitNumber; theEndingUnit: UnitNumber; VAR theRefNum: DriverRefNum): OSErr; C;
  307. FUNCTION FindDriversForDevice(VAR device: RegEntryID; VAR fragmentSpec: FSSpec; VAR fileDriverDesc: DriverDescription; VAR memAddr: Ptr; VAR length: LONGINT; fragName: StringPtr; VAR memDriverDesc: DriverDescription): OSErr; C;
  308. FUNCTION FindDriverForDeviceFromFile(VAR device: RegEntryID; VAR fragmentSpec: FSSpec; VAR driverDesc: DriverDescription; fragName: StringPtr): OSErr; C;
  309. FUNCTION FindDriverCandidates(VAR deviceID: RegEntryID; VAR propBasedDriver: Ptr; VAR propBasedDriverSize: RegPropertyValueSize; deviceName: StringPtr; VAR propBasedDriverType: MacDriverType; VAR gotPropBasedDriver: BOOLEAN; fileBasedDrivers: FileBasedDriverRecordPtr; VAR nFileBasedDrivers: ItemCount): OSErr; C;
  310. FUNCTION FindDriverCandidatesDetailed(deviceID: RegEntryIDPtr; VAR propBasedDriver: Ptr; VAR propBasedDriverSize: RegPropertyValueSize; deviceName: StringPtr; VAR propBasedDriverType: MacDriverType; VAR gotPropBasedDriver: BOOLEAN; fileBasedDrivers: FileBasedDriverDetailedPtr; VAR nFileBasedDrivers: ItemCount): OSErr; C;
  311. FUNCTION ScanDriverCandidates(VAR deviceID: RegEntryID; fileBasedDrivers: FileBasedDriverRecordPtr; nFileBasedDrivers: ItemCount; matchingDrivers: FileBasedDriverRecordPtr; VAR nMatchingDrivers: ItemCount): OSErr; C;
  312. FUNCTION ScanDriverCandidatesDetailed(VAR deviceID: RegEntryID; fileBasedDrivers: FileBasedDriverDetailedPtr; nFileBasedDrivers: ItemCount; matchingDrivers: FileBasedDriverDetailedPtr; VAR nMatchingDrivers: ItemCount): OSErr; C;
  313. FUNCTION CompareFileCandToPropCand(VAR device: RegEntryID; deviceName: StringPtr; propBasedCandidate: DriverTypePtr; fileBasedCandidate: FileBasedDriverRecordPtr): SInt16; C;
  314. PROCEDURE GetCompatibleProperty(VAR device: RegEntryID; VAR compatibleNames: StringPtr; VAR nCompatibleNames: ItemCount); C;
  315. FUNCTION CompatibleDriverNames(nameInfoStr: StringPtr; compatibleNames: StringPtr; nCompatibleNames: ItemCount; VAR nameCount: LONGINT): BOOLEAN; C;
  316. FUNCTION GetDriverForDevice(VAR device: RegEntryID; VAR fragmentConnID: CFragConnectionID; VAR fragmentMain: DriverEntryPointPtr; VAR driverDesc: DriverDescriptionPtr): OSErr; C;
  317. FUNCTION InstallDriverForDevice(VAR device: RegEntryID; beginningUnit: UnitNumber; endingUnit: UnitNumber; VAR refNum: DriverRefNum): OSErr; C;
  318. FUNCTION GetDriverInformation(refNum: DriverRefNum; VAR unitNum: UnitNumber; VAR flags: DriverFlags; VAR count: DriverOpenCount; name: StringPtr; VAR device: RegEntryID; VAR driverLoadLocation: CFragSystem7Locator; VAR fragmentConnID: CFragConnectionID; VAR fragmentMain: DriverEntryPointPtr; VAR driverDesc: DriverDescription): OSErr; C;
  319. FUNCTION GetDriverDescription(fragmentPtr: LogicalAddress; VAR theDriverDesc: DriverDescriptionPtr): OSErr; C;
  320. FUNCTION GetNamedDriverDescFromFSSpec(fragmentSpec: FSSpecPtr; fragName: StringPtr; VAR driverDesc: DriverDescriptionPtr): OSStatus; C;
  321. FUNCTION SetDriverClosureMemory(fragmentConnID: CFragConnectionID; holdDriverMemory: BOOLEAN): OSErr; C;
  322. FUNCTION ReplaceDriverWithFragment(theRefNum: DriverRefNum; fragmentConnID: CFragConnectionID): OSErr; C;
  323. FUNCTION OpenInstalledDriver(refNum: DriverRefNum; ioPermission: SInt8): OSErr; C;
  324. FUNCTION RenameDriver(refNum: DriverRefNum; newDriverName: StringPtr): OSErr; C;
  325. FUNCTION RemoveDriver(refNum: DriverRefNum; immediate: BOOLEAN): OSErr; C;
  326. FUNCTION LookupDrivers(beginningUnit: UnitNumber; endingUnit: UnitNumber; emptyUnits: BOOLEAN; VAR returnedRefNums: ItemCount; VAR refNums: DriverRefNum): OSErr; C;
  327. FUNCTION HighestUnitNumber: UnitNumber; C;
  328. FUNCTION DriverGestaltOn(refNum: DriverRefNum): OSErr; C;
  329. FUNCTION DriverGestaltOff(refNum: DriverRefNum): OSErr; C;
  330. FUNCTION DriverGestaltIsOn(flags: DriverFlags): BOOLEAN; C;
  331.  
  332. {$IFC NOT OLDROUTINELOCATIONS }
  333. FUNCTION PBOpenSync(paramBlock: ParmBlkPtr): OSErr;
  334.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  335.     INLINE $205F, $A000, $3E80;
  336.     {$ENDC}
  337. FUNCTION PBOpenAsync(paramBlock: ParmBlkPtr): OSErr;
  338.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  339.     INLINE $205F, $A400, $3E80;
  340.     {$ENDC}
  341. FUNCTION PBOpenImmed(paramBlock: ParmBlkPtr): OSErr;
  342.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  343.     INLINE $205F, $A200, $3E80;
  344.     {$ENDC}
  345. FUNCTION PBCloseSync(paramBlock: ParmBlkPtr): OSErr;
  346.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  347.     INLINE $205F, $A001, $3E80;
  348.     {$ENDC}
  349. FUNCTION PBCloseAsync(paramBlock: ParmBlkPtr): OSErr;
  350.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  351.     INLINE $205F, $A401, $3E80;
  352.     {$ENDC}
  353. FUNCTION PBCloseImmed(paramBlock: ParmBlkPtr): OSErr;
  354.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  355.     INLINE $205F, $A201, $3E80;
  356.     {$ENDC}
  357. FUNCTION PBReadSync(paramBlock: ParmBlkPtr): OSErr;
  358.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  359.     INLINE $205F, $A002, $3E80;
  360.     {$ENDC}
  361. FUNCTION PBReadAsync(paramBlock: ParmBlkPtr): OSErr;
  362.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  363.     INLINE $205F, $A402, $3E80;
  364.     {$ENDC}
  365. FUNCTION PBReadImmed(paramBlock: ParmBlkPtr): OSErr;
  366.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  367.     INLINE $205F, $A202, $3E80;
  368.     {$ENDC}
  369. FUNCTION PBWriteSync(paramBlock: ParmBlkPtr): OSErr;
  370.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  371.     INLINE $205F, $A003, $3E80;
  372.     {$ENDC}
  373. FUNCTION PBWriteAsync(paramBlock: ParmBlkPtr): OSErr;
  374.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  375.     INLINE $205F, $A403, $3E80;
  376.     {$ENDC}
  377. FUNCTION PBWriteImmed(paramBlock: ParmBlkPtr): OSErr;
  378.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  379.     INLINE $205F, $A203, $3E80;
  380.     {$ENDC}
  381. PROCEDURE AddDrive(drvrRefNum: INTEGER; drvNum: INTEGER; qEl: DrvQElPtr);
  382. FUNCTION GetDrvQHdr: QHdrPtr;
  383.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  384.     INLINE $2EBC, $0000, $0308;
  385.     {$ENDC}
  386. {$ENDC}
  387.  
  388. FUNCTION GetDCtlEntry(refNum: INTEGER): DCtlHandle;
  389. {
  390.     SetChooserAlert used to simply set a bit in a low-mem global
  391.     to tell the Chooser not to display its warning message when
  392.     the printer is changed. However, under MultiFinder and System 7,
  393.     this low-mem is swapped out when a layer change occurs, and the
  394.     Chooser never sees the change. It is obsolete, and completely
  395.     unsupported on the PowerPC. 68K apps can still call it if they
  396.     wish.
  397.     
  398.     pascal Boolean SetChooserAlert(Boolean f);
  399.  
  400. }
  401. FUNCTION DriverInstall(drvrPtr: DRVRHeaderPtr; refNum: INTEGER): OSErr;
  402.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  403.     INLINE $301F, $205F, $A03D, $3E80;
  404.     {$ENDC}
  405. FUNCTION DriverInstallReserveMem(drvrPtr: DRVRHeaderPtr; refNum: INTEGER): OSErr;
  406.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  407.     INLINE $301F, $205F, $A43D, $3E80;
  408.     {$ENDC}
  409. {
  410.   Note: DrvrInstall() is no longer supported, becuase it never really worked anyways.
  411.           There will soon be a DriverInstall() which does the right thing.
  412.  
  413.         DrvrRemove has been renamed to DriverRemove.  But, InterfaceLib for PowerPC
  414.         still exports DrvrRemove, so a macro is used to map the new name to old.
  415.  
  416. }
  417. FUNCTION DrvrRemove(refNum: INTEGER): OSErr;
  418.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  419.     INLINE $301F, $A03E, $3E80;
  420.     {$ENDC}
  421. {$IFC TARGET_CPU_68K }
  422. FUNCTION DriverRemove(refNum: INTEGER): OSErr;
  423.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  424.     INLINE $301F, $A03E, $3E80;
  425.     {$ENDC}
  426. {$ENDC}  {TARGET_CPU_68K}
  427.  
  428.  
  429. FUNCTION OpenDriver(name: Str255; VAR drvrRefNum: INTEGER): OSErr;
  430. FUNCTION CloseDriver(refNum: INTEGER): OSErr;
  431. FUNCTION Control(refNum: INTEGER; csCode: INTEGER; csParamPtr: UNIV Ptr): OSErr;
  432. FUNCTION Status(refNum: INTEGER; csCode: INTEGER; csParamPtr: UNIV Ptr): OSErr;
  433. FUNCTION KillIO(refNum: INTEGER): OSErr;
  434. FUNCTION Fetch(dce: DCtlPtr): LONGINT;
  435.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  436.     INLINE $225F, $2078, $08F4, $4E90, $2E80;
  437.     {$ENDC}
  438. FUNCTION Stash(dce: DCtlPtr; data: ByteParameter): LONGINT;
  439.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  440.     INLINE $101F, $225F, $2078, $08F8, $4E90, $2E80;
  441.     {$ENDC}
  442. PROCEDURE IODone(dce: DCtlPtr; ioResult: OSErr);
  443.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  444.     INLINE $301F, $225F, $2078, $08FC, $4E90;
  445.     {$ENDC}
  446. FUNCTION PBControlSync(paramBlock: ParmBlkPtr): OSErr;
  447.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  448.     INLINE $205F, $A004, $3E80;
  449.     {$ENDC}
  450. FUNCTION PBControlAsync(paramBlock: ParmBlkPtr): OSErr;
  451.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  452.     INLINE $205F, $A404, $3E80;
  453.     {$ENDC}
  454. FUNCTION PBControlImmed(paramBlock: ParmBlkPtr): OSErr;
  455.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  456.     INLINE $205F, $A204, $3E80;
  457.     {$ENDC}
  458. FUNCTION PBStatusSync(paramBlock: ParmBlkPtr): OSErr;
  459.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  460.     INLINE $205F, $A005, $3E80;
  461.     {$ENDC}
  462. FUNCTION PBStatusAsync(paramBlock: ParmBlkPtr): OSErr;
  463.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  464.     INLINE $205F, $A405, $3E80;
  465.     {$ENDC}
  466. FUNCTION PBStatusImmed(paramBlock: ParmBlkPtr): OSErr;
  467.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  468.     INLINE $205F, $A205, $3E80;
  469.     {$ENDC}
  470. FUNCTION PBKillIOSync(paramBlock: ParmBlkPtr): OSErr;
  471.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  472.     INLINE $205F, $A006, $3E80;
  473.     {$ENDC}
  474. FUNCTION PBKillIOAsync(paramBlock: ParmBlkPtr): OSErr;
  475.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  476.     INLINE $205F, $A406, $3E80;
  477.     {$ENDC}
  478. FUNCTION PBKillIOImmed(paramBlock: ParmBlkPtr): OSErr;
  479.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  480.     INLINE $205F, $A206, $3E80;
  481.     {$ENDC}
  482. FUNCTION OpenDeskAcc(deskAccName: Str255): INTEGER;
  483.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  484.     INLINE $A9B6;
  485.     {$ENDC}
  486. PROCEDURE CloseDeskAcc(refNum: INTEGER);
  487.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  488.     INLINE $A9B7;
  489.     {$ENDC}
  490. {
  491.     The PBxxx() routines are obsolete.  
  492.     
  493.     Use the PBxxxSync(), PBxxxAsync(), or PBxxxImmed version instead.
  494. }
  495. FUNCTION PBControl(paramBlock: ParmBlkPtr; async: BOOLEAN): OSErr;
  496. FUNCTION PBStatus(paramBlock: ParmBlkPtr; async: BOOLEAN): OSErr;
  497. FUNCTION PBKillIO(paramBlock: ParmBlkPtr; async: BOOLEAN): OSErr;
  498.  
  499. {$IFC NOT OLDROUTINELOCATIONS }
  500. FUNCTION PBOpen(paramBlock: ParmBlkPtr; async: BOOLEAN): OSErr;
  501. FUNCTION PBClose(paramBlock: ParmBlkPtr; async: BOOLEAN): OSErr;
  502. FUNCTION PBRead(paramBlock: ParmBlkPtr; async: BOOLEAN): OSErr;
  503. FUNCTION PBWrite(paramBlock: ParmBlkPtr; async: BOOLEAN): OSErr;
  504. {$ENDC}
  505.  
  506.  
  507.  
  508.  
  509.  
  510. {$ALIGN RESET}
  511. {$POP}
  512.  
  513. {$SETC UsingIncludes := DevicesIncludes}
  514.  
  515. {$ENDC} {__DEVICES__}
  516.  
  517. {$IFC NOT UsingIncludes}
  518.  END.
  519. {$ENDC}
  520.